// 引入readline模块（Node.js内置，用于读取用户键盘输入）
const readline = require('readline');

// 1. 创建readline接口实例（连接标准输入流stdin和标准输出流stdout）
const rl = readline.createInterface({
  input: process.stdin,  // 输入源：键盘
  output: process.stdout // 输出源：控制台
});

// 2. 定义存储用户信息的对象
const userInfo = {};

// 3. 定义需要采集的信息列表（按顺序提问）
const questions = [
  { key: 'name', prompt: '请输入您的姓名：' },
  { key: 'email', prompt: '请输入您的邮箱：' },
  { key: 'qq', prompt: '请输入您的QQ号:' },
  { key: 'phone', prompt: '请输入您的手机号码：' }
];

/**
 * 4. 递归函数：按顺序提问并保存输入
 * @param {number} index - 当前提问的索引（从0开始）
 */
function askQuestion(index) {
  // 终止条件：所有问题都已提问完毕
  if (index >= questions.length) {
    console.log('\n=== 您输入的完整信息 ===');
    console.log(JSON.stringify(userInfo, null, 2)); // 格式化输出对象（缩进2个空格）
    rl.close(); // 关闭readline接口，释放资源
    return;
  }

  // 获取当前问题
  const { key, prompt } = questions[index];

  // 提问并获取用户输入
  rl.question(prompt, (answer) => {
    // 保存用户输入到对象（去空格处理，避免空字符）
    userInfo[key] = answer.trim();
    // 递归提问下一个问题（索引+1）
    askQuestion(index + 1);
  });
}

// 5. 启动提问流程（从第一个问题开始，索引0）
console.log('=== 用户信息采集 ===');
console.log('请按提示输入以下信息：\n');
askQuestion(0);

// 6. 监听readline接口关闭事件（可选，用于提示）
rl.on('close', () => {
  console.log('\n信息采集完成，程序退出！');
});